package 联系数值计算;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Demo {
    /**
     * 找出一个整数数组中子数组之和的最大值，
     * 例如：数组[1, -2, 3, 5, -1]，返回8（因为符合要求的子数组是 [3, 5]）；
     * 数组[1, -2, 3, -8, 5, 1]，返回6（因为符合要求的子数组是 [5, 1]）;
     * 数组[1, -2, 3,-2, 5, 1]，返回7（因为符合要求的子数组是 [3, -2, 5, 1]）。
     */
    public static int getMaxResult(String array) {
        // 读取字符串[,,],解析为int类型数组
        int[] ints = Arrays.stream(array.substring(1, array.length() - 1)
                .split(",")).mapToInt(Integer::parseInt).toArray();
        int max = ints[0];
        int now = ints[0];
        for (int i = 1; i < ints.length; i++) {
            // 要么将当前元素加入到之前的子数组中，要么从当前元素重新开始
            now = Math.max(ints[i], now + ints[i]);
            // 更新全局最大值
            max = Math.max(max, now);
        }
        System.out.println(max);

        return max;
    }
}